Following the CHI2008 article, the outline is the following:

  • learn chord transition probabilities
  • learn melody chord probabilities
  • record melody
  • track pitch
  • suggest optimal chords
  • play output (synthetize the chord notes)

Things that still need to be done:

  • minor, major mode clustering
  • take into account the time each note is played during each measure (I'm not sure if they really do this in their algorithm, but it makes sense to weigh the melody observation matrix by the length of the note observed on top of it)
  • do an IPython notebook on the Viterbi algorithm